package com.ruoyi.ai_config.domain.dto;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.math.BigDecimal;

/**
 * AI任务配置与参数组合DTO,生成题目类
 * 用于业务逻辑中需要同时使用配置和参数的场景
 *
 * @author lzk
 * @date 2025-06-30
 */
@Data
@Builder
@Schema(description = "AI任务配置与参数组合DTO,生成题目类")
public class QuestionTaskConfigWithParamsDTO {

    @Schema(title = "主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    @Schema(title = "配置名称")
    private String configName;

    @Schema(title = "任务类型")
    private String taskType;

    @Schema(title = "题目数量")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long questionCount;

    @Schema(title = "难度等级")
    private String difficulty;

    @Schema(title = "单选题比例 (0.0-1.0)")
    private BigDecimal singleChoiceRatio;

    @Schema(title = "多选题比例 (0.0-1.0)")
    private BigDecimal multipleChoiceRatio;

    @Schema(title = "判断题比例 (0.0-1.0)")
    private BigDecimal trueOrFalseRatio;

    @Schema(title = "是否随机题型分布")
    private Boolean randomTypeDistribution;

    @Schema(title = "提示词模板")
    private String promptTemplate;

    @Schema(title = "模板变量定义")
    private String templateVariables;

}
